/*
 * systick.c
 *
 *  Created on: 2018��3��5��
 *      Author: anve
 */

#include "systick.h"

void SysDelay1ms(u32 ms)
{
#if 0  // �����Ƿ��������������  // ������û��Ӱ��
	if(isFreertosStart()&&(ms > 5))
	{

	    osDelay(ms);
	}
	else
#endif
	{
	    
		u32 start = GetSysTick();
		while(!isSysTickTimeout(start, ms));
	}

}

u32 GetSysTick(void)
{
	u32 temp;

	temp = HAL_GetTick();

	return temp;
}

/*******************************************************************************
* Function Name  : isSysTickTimeout
* Description    : is time out
* Input          : startTiming--start sys tick count
			 delayTimming--delay time   (ms)
* Output         : None
* Return         : TRUE---time out
*******************************************************************************/
bool isSysTickTimeout(vu32 startTiming, vu32 delayTimming)
{
	u32 endTiming;

	endTiming = GetSysTick();
	if(endTiming >= startTiming)
	{
		if( (endTiming-startTiming) <delayTimming)
		{
			return FALSE;
		}
		else
		{
			return TRUE;  // time out
		}

	}
	else if((startTiming>(U32_MAX>>1))&&(endTiming<(U32_MAX>>1)))
	{
		if((endTiming+(U32_MAX-startTiming)) < delayTimming)
		{
			return FALSE;
		}
		else
		{
			return TRUE; // time out
		}
	}
	return FALSE;
}
